package com.bookcloud.java21.chapter2.数据类型_整型2_3;

/** 数据类型_整型2_3 */
public class Lesson23 {
  public static void main(String[] args) {
    /*
    一、整型 int/Integer
    1. 整型的定义
    2. 整型的使用
    3. 整型的转换
     */
    // 1.1 原型类型直接赋值
    int x = 10;
    // 1.2 包装类型赋值:自动装箱
    Integer y = 20; // Integer.valueOf()
    // 1.3 拆箱的过程
    int z = y; // y.intValue()
    System.out.println("z=" + z);
    /*
    二、byte/Byte
    精度：1字节
    范围：-128~127
     */
    byte b = 10;
    // 2.1 自动装箱
    Byte b1 = 20; // Byte.valueOf()
    // 2.2 自动拆箱
    byte b2 = b1; // b.byteValue()
    System.out.println("b2=" + b2);
    /*
    三、short/Short
    精度：2字节
    范围：-32768~32767
     */
    short s = 10;
    // 3.1 自动装箱
    Short s1 = 20; // Short.valueOf()或 new Short(20)
    // 3.2 自动拆箱
    short s2 = s1; // s1.shortValue()
    System.out.println("s2=" + s2);
    /*
       四、long/Long (长整型）
       精度：8字节
       范围：-2^63~2^63-1
    */
    long l = 10;
    // 4.1 自动装箱
    Long l1 = 20L; // Long.valueOf()或 new Long(20)
    // 4.2 自动拆箱
    long l2 = l1; // l1.longValue()
    System.out.println("l2=" + l2);
    /*
    五、类型的转换
    1. 自动类型转换（隐式转换）
     小类型转换成大类型
    2. 强制类型转换（显式转换）
     大类型转换成小类型（可能造成精度的丢失）
     */
    byte b3 = 10;
    int i3 = b3;
    System.out.println("i3=" + i3);
    // 5.2 强制类型转换(注意精度的丢失）
    int i4 = 12;
    byte b4 = (byte) i4;
    System.out.println("b4=" + b4);
  }
}
